import 'package:get/get.dart';
import 'package:flutter/material.dart';

import '../../../controllers/app_controller.dart';
import '../../../controllers/auth_controller.dart';
import '../../../routes/app_routes.dart';

/// 启动屏控制器
/// 负责处理应用启动初始化和导航逻辑
class SplashController extends GetxController {
  // 注入依赖
  final AppController _appController = Get.find<AppController>();
  final AuthController _authController = Get.find<AuthController>();
  
  // 动画控制器
  late AnimationController animationController;
  late Animation<double> fadeAnimation;
  late Animation<double> scaleAnimation;
  
  // 初始化状态
  final RxBool _isLoading = true.obs;
  bool get isLoading => _isLoading.value;
  
  // 初始化文本
  final RxString _statusText = '正在初始化...'.obs;
  String get statusText => _statusText.value;
  
  @override
  void onInit() {
    super.onInit();
    
    // 延迟执行，确保UI已经构建完成
    Future.delayed(const Duration(milliseconds: 200), () {
      _initializeApp();
    });
  }
  
  /// 初始化应用
  Future<void> _initializeApp() async {
    try {
      // 更新状态文本
      _statusText.value = '正在初始化应用...';
      
      // 检查应用是否是首次启动
      if (_appController.isFirstLaunch) {
        // 首次启动逻辑
        _statusText.value = '首次启动，准备配置...';
        await Future.delayed(const Duration(seconds: 1));
        _appController.isFirstLaunch = false;
      }
      
      // 检查应用更新
      _statusText.value = '检查应用更新...';
      await Future.delayed(const Duration(seconds: 1));
      
      // 检查用户登录状态
      _statusText.value = '检查登录状态...';
      await Future.delayed(const Duration(seconds: 1));
      
      // 完成初始化
      _statusText.value = '初始化完成';
      _isLoading.value = false;
      
      // 延迟一段时间后导航到适当的页面
      await Future.delayed(const Duration(seconds: 1));
      _navigateToNextScreen();
      
    } catch (e) {
      debugPrint('启动屏初始化错误: $e');
      _statusText.value = '初始化失败，请重试';
      _isLoading.value = false;
      
      // 如果出错，延迟后重试或进入错误恢复页面
      await Future.delayed(const Duration(seconds: 2));
      _navigateToNextScreen();
    }
  }
  
  /// 导航到下一个页面
  void _navigateToNextScreen() {
    // 检查用户是否已登录
    if (_authController.isLoggedIn) {
      // 已登录，进入主页
      Get.offAllNamed(AppRoutes.HOME);
    } else {
      // 未登录，进入登录页
      Get.offAllNamed(AppRoutes.LOGIN);
    }
  }
} 